﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;
using TicketsPhone.Domain.Entities;
using TicketsPhone.Domain.Access;
using TicketsPhone.Entidades;

namespace TicketsPhone.FrontEnd.Services
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class AjaxService
    {
        // Para usar HTTP GET, agregue el atributo [WebGet]. (El valor predeterminado de ResponseFormat es WebMessageFormat.Json)
        // Para crear una operación que devuelva XML,
        //     agregue [WebGet(ResponseFormat=WebMessageFormat.Xml)]
        //     e incluya la siguiente línea en el cuerpo de la operación:
        //         WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        [OperationContract]
        public void DoWork()
        {
            // Agregue aquí la implementación de la operación
            return;
        }


        [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
        public RespuestaAjax<Sucursal[]> ObtenerSucursales(int idEntidad)
        {
            RespuestaAjax<Sucursal[]> respuesta = new RespuestaAjax<Sucursal[]>();

            try
            {
                SucursalRepositorio sucursalRepositorio = new SucursalRepositorio();
                sucursalRepositorio.Objeto.Entidad.IdEntidad = idEntidad;
                respuesta.Respuesta = sucursalRepositorio.Filtrar().ToArray();
            }
            catch (Exception e)
            {
                LogErroresRepositorio.GuardarLog(e);
                respuesta.TieneError = true;
            }

            return respuesta;
        }


        [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
        public RespuestaAjax<Tramite[]> ObtenerTramites(int idEntidad)
        {
            RespuestaAjax<Tramite[]> respuesta = new RespuestaAjax<Tramite[]>();

            try
            {
                TramiteRepositorio tramiteRepostorio = new TramiteRepositorio();
                tramiteRepostorio.Objeto = new Tramite() { Entidad = new EntidadRelacional() { IdEntidad = idEntidad } };
                respuesta.Respuesta = tramiteRepostorio.Filtrar().ToArray();
            }
            catch (Exception e)
            {
                LogErroresRepositorio.GuardarLog(e);
                respuesta.TieneError = true;
            }

            return respuesta;
        }




        // Agregue aquí más operaciones y márquelas con [OperationContract]
    }
}
